home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / v9n16.arc / NWORDS.PRG < prev    next >
Text File  |  1990-08-24  |  3KB  |  172 lines

  1. «RHA«PT2»«LM10»«RM75»DATABASES o TNEUHAUS       p.  «PN»  of «FP» 
  2. Vol. 9, No. 16                      Filename:  «VA$FI»
  3.  
  4.  
  5. »«PT2»«LM20»«RM50.5»«AL0»«LS2»«TS23»
  6.  
  7.  
  8. «LM0»«RM100»
  9. [[CODE BOX]]
  10. NWORDS.PRG
  11. COMPLETE LISTING
  12. [[include magnet logo]]
  13.  
  14.  
  15.  
  16. *********************************************************
  17. * NWORDS.PRG
  18. * Convert numbers to words
  19. *********************************************************
  20. PROCEDURE n2w
  21. PARAMETERS m_number                && pass numeric value
  22. *
  23. * Return "Invalid number" if out of range
  24. *
  25. IF (m_number <= 0) .OR. (m_number > 999999999999.99)
  26.    RETURN "Invalid number"
  27. ENDIF
  28. *
  29. * Initialize
  30. *
  31. word = []
  32. orig = m_number
  33. cents = (m_number - INT(m_number))*100
  34. *
  35. * If less than $1.00, start with "Zero"
  36. *
  37. IF INT(m_number) = 0
  38.    word = [Zero ]
  39. ENDIF
  40. *
  41. * Set Up Arrays
  42. *
  43. DIMENSION mone(19), mten(9)
  44. mone(1) = [One ]
  45. mone(2) = [Two ]
  46. mone(3) = [Three ]
  47. mone(4) = [Four ]
  48. mone(5) = [Five ]
  49. mone(6) = [Six ]
  50. mone(7) = [Seven ]
  51. mone(8) = [Eight ]
  52. mone(9) = [Nine ]
  53. mone(10) = [Ten ]
  54. mone(11) = [Eleven ]
  55. mone(12) = [Twelve ]
  56. mone(13) = [Thirteen ]
  57. mone(14) = [Fourteen ]
  58. mone(15) = [Fifteen ]
  59. mone(16) = [Sixteen ]
  60. mone(17) = [Seventeen ]
  61. mone(18) = [Eighteen ]
  62. mone(19) = [Nineteen ]
  63.  
  64. mten(1) = [Ten ]
  65. mten(2) = [Twenty ]
  66. mten(3) = [Thirty ]
  67. mten(4) = [Fourty ]
  68. mten(5) = [Fifty ]
  69. mten(6) = [Sixty ]
  70. mten(7) = [Seventy ]
  71. mten(8) = [Eighty ]
  72. mten(9) = [Ninety ]
  73. *
  74. *  Handle billions
  75. *
  76. x = INT(m_number/1000000000)
  77. IF x > 0
  78.    DO mkwords WITH x, word
  79.    word = word + [Billion ]
  80. ENDIF
  81. m_number = m_number - (x * 1000000000)
  82. *
  83. *  Handle millions
  84. *
  85. x = INT(m_number/1000000)
  86. IF x > 0
  87.    DO mkwords WITH x, word
  88.    word = word + [Million ]
  89. ENDIF
  90. m_number = m_number - (x * 1000000)
  91. *
  92. *  Handle thousands
  93. *
  94. x = INT(m_number/1000)
  95.  
  96. IF x > 0
  97.    DO mkwords WITH x, word
  98.    word = word + [Thousand ]
  99. ENDIF
  100. m_number = m_number - (x * 1000)
  101. *
  102. * Handle the rest
  103. *
  104. IF m_number >= 1
  105.    DO mkwords WITH INT(m_number), word
  106. ENDIF
  107. *
  108. * Setup "dollars" and cents
  109. *
  110. IF orig >= 2 .OR. int(orig) = 0
  111.    word = word + [Dollars and ]
  112. ELSE
  113.    word = word + [Dollar and ]
  114. ENDIF
  115. IF cents # 0
  116.    IF cents < 10
  117.       word = word + '0' + STR(cents,1) + [/100]
  118.    ELSE
  119.       word = word + STR(cents,2) + [/100]
  120.    ENDIF
  121. ELSE
  122.    word = word + [00/100]
  123. ENDIF
  124.  
  125. RETURN word
  126. *
  127. * Procedure: MAKE_WORDS
  128. *
  129. PROCEDURE mkwords
  130. PARAMETERS numb, string
  131. * PRIVATE nstr, nlen, nlook
  132. nstr = STR(numb)
  133. DO WHILE SUBSTR(nstr,1,1)=' '
  134.    nstr = SUBSTR(nstr,2)
  135. ENDDO
  136. DO WHILE ("" <> nstr)
  137.    nlen = LEN(nstr)
  138.    nlook = VAL(SUBSTR(nstr,1,1))
  139.    IF nlook = 0
  140.       IF nlen = 1
  141.          nstr = ''
  142.       ELSE
  143.          nstr = SUBSTR(nstr,2)
  144.       ENDIF
  145.       LOOP
  146.    ENDIF
  147.    DO CASE
  148.     CASE nlen = 3
  149.       string = string + mone(nlook)
  150.       string = string + "Hundred "
  151.       nstr = SUBSTR(nstr,2)
  152.     CASE nlen = 2
  153.       IF VAL(SUBSTR(nstr,1,2)) < 20
  154.          string = string + mone(VAL(SUBSTR(nstr,1,2)))
  155.          nstr = ''
  156.          LOOP
  157.       ENDIF
  158.       IF VAL(SUBSTR(nstr,1,2)) >= 20
  159.          string = string + mten(nlook)
  160.          nstr = SUBSTR(nstr,2)
  161.       ENDIF
  162.     CASE nlen = 1
  163.       string = string + mone(nlook)
  164.       nstr = ''
  165.    ENDCASE
  166. ENDDO
  167. RETURN
  168. * eof
  169.  
  170.  
  171. «BB»«PT7»«AL0»«LM0»«RM69.6»«LS2»«MDBO»Figure C:«MDNM» This procedure converts numbers into English.
  172.